package SwordForOffer.Problem9;


public class MyFibonacci {
    // 递归做法
    public Integer fibonacciDigui(int n) {

        if (n == 0){
            return 0;
        }
        if (n == 1){
            return 1;
        }
        int result1 = fibonacciDigui(n - 1);
        int result2 = fibonacciDigui(n - 2);

        return result1 + result2;
    }

    public Long fibonacci(int n) {
        if (n < 0){
            return null;
        }
        if (n == 0){
            return 0L;
        }
        if (n == 1){
            return 1L;
        }
        long f0 = 0;
        long f1 = 1;
        long f2 = -1;
        int num = 1;
        while (num < n){
            f2 = f1 + f0;
            f0 = f1;
            f1 = f2;
            num++;
        }

        return f2;
    }
}
